<?php

/**
 * 
 * Description of class DbAanwezig
 * Database klassen om aanwezigen op te slaan, aan te passen, verwijderen of op te halen.
 * 
 * @version 0.2
 * @author Sander van Belleghem
 * 
 * Changelog:
 * Query's op database niveau uitvoeren ipv applicatie niveau.
 * 
 */

require_once 'class/defs/constants.php';
require_once FILE_DB_DATABASE;

class DbAanwezig extends Database {
    
    private $aanwezig_id = '';
    private $presentielijst_id = '';
    private $aanwezig_type_id = '';
    private $persoons_naam = '';
    
    public function __construct($aanwezig_id = ''){
        //if (DEBUG_LVL & DEBUG_LVL_CLASS) echo __FILE__ . __LINE__ .': ' . __CLASS__ .'<BR/>';
        
        parent::__construct();
        // If Observatie id get versie data
        if (!empty ($aanwezig_id)){
            $this->get($aanwezig_id);
        } else {
            $this->reset();
        }
    }
    
    private function get($aanwezig_id){
        
        $query = mysql_query("SELECT * FROM aanwezig WHERE aanwezig_id = '" . mysql_real_escape_string($aanwezig_id) . "' LIMIT 1 ");
        if (!$res = mysql_fetch_object($query)){

            $this->reset();
            throw new Exception(DBAANWEZIG_ERROR_SELECT);
        }
        
        $this->aanwezig_id = $aanwezig_id;
        $this->presentielijst_id = $res->presentielijst_id;
        $this->aanwezig_type_id = $res->aanwezig_type_id;
        $this->persoons_naam = $res->persoons_naam;
        
        if (DEBUG_LVL & DEBUG_LVL_QUERY) echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
    }
    
    public function getAanwezigId(){
        
        return $this->aanwezig_id;
    }
    
    public function getAanwezigTypeId(){
        
        return $this->aanwezig_type_id;
    }
    
    public function getPersoonsNaam(){
        
        return $this->persoons_naam;
    }
     
    public function delete(){
        
        $query = "DELETE FROM aanwezig WHERE aanwezig . aanwezig_id ='" . mysql_real_escape_string($this->actie_id) . "'  LIMIT 1 ";
        
        if (!$this->dbquery($query)){
            throw new Exception(DB_ERROR_COULDNOTDELETE);
        }

        if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
        
        $this->reset();
    }

    public function save($presentielijst_id, $aanwezig_type_id, $persoons_naam){
        /*echo("presentielijstID " . $presentielijst_id . "<br />");
        echo("aanwezig_type_id " . $aanwezig_type_id . "<br />");
        echo("persoons_naam " . $persoons_naam . "<br />");*/
        if ($this->checkId($presentielijst_id, "presentielijst_id") && 
            $this->checkId($aanwezig_type_id, "aanwezig_type_id") &&
            $this->checkString($persoons_naam, 45, 1)){

            $query = "INSERT INTO aanwezig (presentielijst_id, aanwezig_type_id, persoons_naam) 
                        VALUES ('" . mysql_real_escape_string($presentielijst_id) . "', 
                                '" . mysql_real_escape_string($aanwezig_type_id) . "', 
                                '" . mysql_real_escape_string($persoons_naam) . "')";

            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';

            if (!$this->dbquery($query)){
                throw new Exception("Verwerken van de gegevens is mislukt.");
            }
            
            // Update class attr
            $this->aanwezig_id = mysql_insert_id();
            $this->presentielijst_id = $presentielijst_id;
            $this->aanwezig_type_id = $aanwezig_type_id;
            $this->persoons_naam = $persoons_naam;
            
            return true;
            
        } else {
            //throw new Exception(DB_ERROR_INVOERFOUT);
        }
    }
    
    public function update($presentielijst_id, $aanwezig_type_id, $persoons_naam){
        
        if ($this->checkId($presentielijst_id) && 
            $this->checkId($aanwezig_type_id) &&
            $this->checkString($persoons_naam, 45, 1)){
            
            $query = "UPDATE aanwezig 
                        SET presentielijst_id = '" . mysql_real_escape_string($presentielijst_id) . "', 
                            aanwezig_type_id = '" . mysql_real_escape_string($aanwezig_type_id) . "', 
                            persoons_naam = '" . mysql_real_escape_string($persoons_naam) . "' 
                        WHERE aanwezig . aanwezig_id ='" . mysql_real_escape_string($this->actie_id) . "'";
            
            if (!$this->dbquery($query)){
                throw new Exception(DB_ERROR_NIETVERWERKT);
            }
            
            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
            
            $this->presentielijst_id = $presentielijst_id;
            $this->aanwezig_type_id = $aanwezig_type_id;
            $this->persoons_naam = $persoons_naam;
            
            return true;
            
        } else {
            throw new Exception(DB_ERROR_INVOERFOUT);
        }
    }

    private function reset(){
        
        $this->aanwezig_id = '';
        $this->presentielijst_id = '';
        $this->aanwezig_type_id = '';
        $this->persoons_naam = '';
    }
    
    public function __destruct(){
        parent::__destruct();
    }
}

class TestDbAanwezig {
    
    public function TestDbAanwezig(){
        try {
            
//            $save = new DbAanwezig();
//            $save->save(1, 1, 'vanBelleghem');
            
            $update = new DbAanwezig(10); 
            $update->update(1, 1, DBAANWEZIG_TEST_NAAM);
            
//            $delete = new DbAanwezig(1);
//            $delete->delete();
            
        } catch (Exception $e){
            echo '<pre>';
            echo 'Caught exception: ',  $e->getMessage(), "\n";
            echo '</pre>';
        }
    }
}
?>